package org.walkerljl.practice.reference;

import org.walkerljl.practice.mock.domain.User;

import java.net.Socket;
import java.util.Map;
import java.util.WeakHashMap;

/**
 * 在 SocketManager 中防止泄漏很容易，只要用 WeakHashMap 代替 HashMap 就行了。
 * （这里假定SocketManager不需要线程安全）。当映射的生命周期必须与键的生命周期联系在一起时，可以使用这种方法。
 * 用WeakHashMap修复 SocketManager。
 * @author lijunlin
 */
public class SocketManager {

    private Map m = new WeakHashMap();

    public void setUser(Socket s, User u) {
        m.put(s, u);
    }
    public User getUser(Socket s) {
        return (User) m.get(s);
    }
}
